应用:kubectl port-forward

译者:李昂 校对:无

kubectl port-forward命令转发了本地端口到pod端口的连接。它的手册现在这里可以查看。相比于kubectl proxykubectl port-forward也可以转发TCP流量而kubectl proxy只能转发HTTP流量。本页阐述了如何使用kubectl port-forward去连接Redis 数据库,这在数据库查错中很有用。

创建一个Redis主服务

$ kubectl create examples/redis/redis-master.yaml
pods/redis-master

等Redis主服务的pod状态变为Running和Ready。

$ kubectl get pods
NAME           READY     STATUS    RESTARTS   AGE
redis-master   2/2       Running   0          41s

连接到Redis主服务

Redis主服务监听在端口6379,使用下面命令可以验证,

$ kubectl get pods redis-master -t='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
6379

然后我们转发redis主服务pod的端口6379到本地6379端口,

$ kubectl port-forward -p redis-master 6379:6379
I0710 14:43:38.274550    3655 portforward.go:225] Forwarding from 127.0.0.1:6379 -> 6379
I0710 14:43:38.274797    3655 portforward.go:225] Forwarding from [::1]:6379 -> 6379

想要验证连接成功,我们可以在本地启动一个redis客户端,

$ redis-cli
127.0.0.1:6379> ping
PONG

现在我们就可以从本地来检查数据库了。